﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/**
 * 注文見出検索用のモデル
 */
namespace Kaidou.Model
{
    public class OrderSearchModel
    {
        /** 受注 */
	    private string juchu_no;
	    /** 受注区分 */
	    private string juchu_clss;
	    /** 受注日 */
	    private DateTime juchu_date;
	    /** 受注日(開始） */
	    private string juchu_str_date;
	    /** 受注日(終了） */
	    private string juchu_end_date;
	    /** 組合員コード */
	    private string union_code;
	    /** 組合員名 */
	    private string office_name;
	    /** 組合員名(カナ） */
	    private string office_kana;
	    /** 支店コード */
	    private int branch_code;
	    /** 支店名 */
	    private string branch_name;
	    /** シール合計枚数 */
	    private int total_seal_qty;
	    /** 報告率(OCR用紙)注文 */
	    private int ocr_order_qty;
	    /** 報告率 */
	    private float report_rate;
	    /** 報告率(開始) */
	    private float report_str_rate;
	    /** 報告率(終了) */
	    private float report_end_rate;
	    /** FAX/OCRエラーフラグ */
	    private string fax_error_flg;
	    /** ステータス */
	    private string juchu_sts;

	    /**
	     * 本クラスのデフォルトコンストラクタ
	     */
	    public OrderSearchModel() {
	    }

	    /**
	     * 受注�ｂ�設定する
	     * @param string 受注��
	     */
	    public void setJuchu_no(string juchu_no) {
		    this.juchu_no = juchu_no;
	    }

	    /**
	     * 受注�ｂ�取得する
	     * @return string 受注��
	     */
	    public string getJuchu_no() {
		    return this.juchu_no;
	    }

	    /**
	     * 受注区分を設定する
	     * @param string 受注区分
	     */
	    public void setJuchu_clss(string juchu_clss) {
		    this.juchu_clss = juchu_clss;
	    }

	    /**
	     * 受注区分を取得する
	     * @return string 受注区分
	     */
	    public string getJuchu_clss() {
		    return this.juchu_clss;
	    }

	    /**
	     * 受注日を設定する
	     * @param DateTime 受注日
	     */
	    public void setJuchu_date(DateTime juchu_date) {
		    this.juchu_date = juchu_date;
	    }

	    /**
	     * 受注日を取得する
	     * @return DateTime 受注日
	     */
	    public DateTime getJuchu_date() {
		    return this.juchu_date;
	    }

	    /**
	     * 受注日(開始)を設定する
	     * @param java.sql.string 受注日(開始)
	     */
	    public void setJuchu_str_date(string juchu_str_date) {
		    this.juchu_str_date = juchu_str_date;
	    }

	    /**
	     * 受注日(開始)を取得する
	     * @return string 受注日(開始)
	     */
	    public string getJuchu_str_date() {
		    return this.juchu_str_date;
	    }

	    /**
	     * 受注日(開始)を取得する
	     * @return string 受注日(開始)
	     */
	    public DateTime getJuchu_str_dateAsDate() {

            int year = int.Parse(this.juchu_str_date.Substring(0, 4));
            int month = int.Parse(this.juchu_str_date.Substring(4, 2));
            int day = int.Parse(this.juchu_str_date.Substring(6, 2));
            DateTime date = new DateTime(year,month,day);
           
            return date;
	    }

	    /**
	     * 受注日(終了)を設定する
	     * @param string 受注日(終了)
	     */
	    public void setJuchu_end_date(string juchu_end_date) {
		    this.juchu_end_date = juchu_end_date;
	    }

	    /**
	     * 受注日(終了)を取得する
	     * @return java.sql.string 受注日(終了)
	     */
	    public string getJuchu_end_date() {
		    return this.juchu_end_date;
	    }

	    /**
	     * 受注日(終了)を取得する
	     * @return DateTime 受注日(終了)
	     */
	    public DateTime getJuchu_end_dateAsDate() {
            int year = int.Parse(this.juchu_end_date.Substring(0, 4));
            int month = int.Parse(this.juchu_end_date.Substring(4, 2));
            int day = int.Parse(this.juchu_end_date.Substring(6, 2));
            DateTime date  = new DateTime(year, month, day);
            
            return date;
	    }

	    /**
	     * 組合員コードを設定する
	     * @param string 組合員コード
	     */
	    public void setUnion_code(string union_code) {
		    this.union_code = union_code;
	    }

	    /**
	     * 組合員コードを取得する
	     * @return string 組合員コード
	     */
	    public string getUnion_code() {
		    return this.union_code;
	    }

	    /**
	     * 組合員名を設定する
	     * @param string 組合員名
	     */
	    public void setOffice_name(string office_name) {
		    this.office_name = office_name;
	    }

	    /**
	     * 組合員名を取得する
	     * @return string 組合員名
	     */
	    public string getOffice_name() {
		    return this.office_name;
	    }

	    /**
	     * 組合員名を設定する
	     * @param string 組合員名
	     */
	    public void setOffice_kana(string office_kana) {
		    this.office_kana = office_kana;
	    }

	    /**
	     * 組合員名を取得する
	     * @return string 組合員名
	     */
	    public string getOffice_kana() {
		    return this.office_kana;
	    }

	    /**
	     * 支店コードを設定する
	     * @param string 支店コード
	     */
	    public void setBranch_code(int branch_code) {
		    this.branch_code = branch_code;
	    }

	    /**
	     * 支店コードを取得する
	     * @return int 支店コード
	     */
	    public int getBranch_code() {
		    return this.branch_code;
	    }

	    /**
	     * 支店名を設定する
	     * @param string 支店名
	     */
	    public void setBranch_name(string branch_name) {
		    this.branch_name = branch_name;
	    }

	    /**
	     * 支店名を取得する
	     * @return int 支店コード
	     */
	    public string getBranch_name() {
		    return this.branch_name;
	    }

	    /**
	     * 支店名を取得する。
	     * 支店コードが000の場合には"本店"を、それ以外の場合にはoffice_nameを返します。
	     * @return string 支店名
	     */
	    public string getBranch_office_name() {
		    if (getBranch_code() == 0) {
			    return "本店";
		    } else {
			    return getBranch_name();
		    }

	    }

	    /**
	     * シール合計枚数を設定する
	     * @param int シール合計枚数
	     */
	    public void setTotal_seal_qty(int total_seal_qty) {
		    this.total_seal_qty = total_seal_qty;
	    }

	    /**
	     * シール合計枚数を取得する
	     * @return int シール合計枚数
	     */
	    public int getTotal_seal_qty() {
		    return this.total_seal_qty;
	    }

	    /**
	     * 報告書(OCR用紙)注文を設定する
	     * @param int 報告書(OCR用紙)注文
	     */
	    public void setOcr_order_qty(int ocr_order_qty) {
		    this.ocr_order_qty = ocr_order_qty;
	    }

	    /**
	     * 報告書(OCR用紙)注文を取得する
	     * @return int 報告書(OCR用紙)注文
	     */
	    public int getOcr_order_qty() {
		    return this.ocr_order_qty;
	    }

	    /**
	     * 報告率を設定する
	     * @param float 報告率
	     */
	    public void setReport_rate(float report_rate) {
		    this.report_rate = report_rate;
	    }

	    /**
	     * 報告率を取得する
	     * @return float 報告率
	     */
	    public float getReport_rate() {
		    return (float)Math.Round(this.report_rate,1);
	    }

	    /**
	     * 報告率(開始）を設定する
	     * @param float 報告率
	     */
	    public void setReport_str_rate(float report_str_rate) {
		    this.report_str_rate = report_str_rate;
	    }

	    /**
	     * 報告率(開始）を取得する
	     * @return float 報告率
	     */
	    public float getReport_str_rate() {
		    return this.report_str_rate;
	    }

	    /**
	     * 報告率(終了）を設定する
	     * @param float 報告率
	     */
	    public void setReport_end_rate(float report_end_rate) {
		    this.report_end_rate = report_end_rate;
	    }

	    /**
	     * 報告率(終了）を取得する
	     * @return float 報告率
	     */
	    public float getReport_end_rate() {
		    return this.report_end_rate;
	    }

	    /**
	     * FAX/OCRエラーフラグを設定する
	     * @param string FAX/OCRエラーフラグ
	     */
	    public void setFax_error_flg(string fax_error_flg) {
		    this.fax_error_flg = fax_error_flg;
	    }

	    /**
	     * FAX/OCRエラーフラグを取得する
	     * @return string FAX/OCRエラーフラグ
	     */
	    public string getFax_error_flg() {
		    return this.fax_error_flg;
	    }

	    /**
	     * ステータスを設定する
	     * @param string ステータス
	     */
	    public void setJuchu_sts(string juchu_sts) {
		    this.juchu_sts = juchu_sts;
	    }

	    /**
	     * ステータスを取得する
	     * @return string ステータス
	     */
	    public string getJuchu_sts() {
		    return this.juchu_sts;
	    }

	    /**
	     * 注文区分文字を取得する
	     * 10:INTERNET    20:FAX 
	     * @return string 区分文字
	     */
	    public string getJuchu_clss_moji() {
		    int clss = 0;
		    try {
			    clss = int.Parse(this.juchu_clss);
		    } catch (Exception ee) {
			    return null;
		    }
		    switch (clss) {
			    case 10 :
				    return "IN";
			    case 20 :
				    return "FAX";
			    default :
				    return "ステータスエラー";
		    }
	    }

	    /**
	     * ステータス文字を取得する
	     * 10:未発注    20:発注済       30:発送済       99:削除
	     * @return string ステータス文字
	     */
	    public string getJuchu_sts_moji() {
		    int sts = 0;
		    try {
			    sts = int.Parse(this.juchu_sts);
		    } catch (Exception e) {
			    return null;
		    }
		    switch (sts) {
			    case 10 :
				    return "未発注";
			    case 20 :
				    return "発注済";
			    case 30 :
				    return "発送済";
			    case 99 :
				    return "削除";
			    default :
				    return "ステータスエラー";
		    }
	    }

	    /**
	     * ERR字を取得する
	     * fax_err_flgの値がFAX_ERROR_FLAG_ERRORの場合"ERR"文字を取得
	     * @return string ステータス文字
	     */
	    public string getErrorFlg() {
		    if (TrnJuchuh.FAX_ERROR_FLAG_ERROR.Equals(getFax_error_flg())) {
			    return "ERR";
		    } else {
			    return "";
		    }

	    }

	    /**
	     * "注文"文字を取得する
	     * ocr_order_flgの値が一件以上の場合"注文"文字を取得
	     * @return string ステータス文字
	     */
	    public string getOcrOrderFlg() {
		    if (getOcr_order_qty() > 0) {
			    return "注文";
		    } else {
			    return "";
		    }

	    }

	    /**
	     * FAX/OCRエラーの場合trueを返す。
	     * fax_ocr_flgの値がFAX_ERROR_FLAG_ERRORの場合true
	     * @return boolean
	     */
	    public bool isError() {
		    if (TrnJuchuh.FAX_ERROR_FLAG_ERROR.Equals(getFax_error_flg())) {
			    return true;
		    } else {
			    return false;
		    }
	    }
    }
}
